﻿namespace ORS.OrderRobot
{
	public static class DateTimeExtensions
	{
        /// <summary>
        /// 获取中国时区的当前时间
        /// </summary>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        public static DateTime China(this DateTime dateTime)
        {
            // 定义中国时区（UTC+8）
            TimeZoneInfo ChinaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");
            // 将本地时间转换为中国时间
            DateTime chinaTime = TimeZoneInfo.ConvertTime(dateTime, ChinaTimeZone);
            // 返回中国时间
            return chinaTime;
        }
        /// <summary>
        /// utc时间转换为中国时间
        /// </summary>
        /// <param name="utcTime"></param>
        /// <returns></returns>
        public static DateTime UtcToChina(this DateTime utcTime)
        {
            // 确保它被标记为 UTC 时间（如果尚未）
            if (utcTime.Kind != DateTimeKind.Utc)
            {
                utcTime = DateTime.SpecifyKind(utcTime, DateTimeKind.Utc);
            }
            // 获取中国时区信息（Windows 系统中 ID 是 "China Standard Time"）
            TimeZoneInfo chinaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("China Standard Time");

            // 转换为中国时间
            DateTime chinaTime = TimeZoneInfo.ConvertTimeFromUtc(utcTime, chinaTimeZone);

            return chinaTime;
        }
        /// <summary>
        /// 从当前时间到当天结束（23:59:59）的剩余时间，以 TimeSpan 格式返回
        /// </summary>
        /// <param name="dateTime"></param>
        /// <returns></returns>
        public static TimeSpan GetEndOfDayTimeSpan(this DateTime dateTime){
            var todayEnd = dateTime.Date.AddDays(1).AddSeconds(-1); // 今天23:59:59
            return todayEnd - dateTime;
        }
    }
    
}

